#!/bin/bash

if [ $# -eq 0 ];then

    echo "./i-tool.sh [-m on|off] [-l|-i name[version]]"
    echo "   -m       安装模式,默认为off，此选项与-i选项配合使用"
    echo "     on       在线安装模式(包含搭建了本地软件源的情况)，目标主机能够连接互联网，相关资源将直接下载，不需要提前下载到本地"
    echo "     off      离线安装模式，需要将软件依赖的相关组件手工下载到对应软件目录的image下，image下的list.txt声明了的依赖组件"
    echo "   -l       查看此工具目前支持的软件列表"
    echo "   -i       安装软件，软件必须再list指令所列范围内"
    echo "     name     软件的名称，当指定了 install 参数时，必须设置此参数"
    echo "     version  软件版本，可选参数。 与 name 参数配合使用"
    exit 1
fi

run_mode="off"
command_list="false"
command_install="false"
name_version=""
while getopts ":m:li:" arg
do
    case $arg in
    m)
        run_mode="$OPTARG"
    ;;
    l)
        command_list="true"
    ;;
    i)
        command_install="true"
        name_version="$OPTARG"
    ;;
    esac
done

entrance() {
	  if [ "$2" = "true" ] ; then
        list_tools
        exit 0
    fi

    if [ "$1" = "on" ] ; then
        if [ "$3" = "true" ] ; then
            online_install $4
            exit 0
        fi
    else
        if [ "$3" = "true" ] ; then
            offline_install $4
            exit 0
        fi
    fi
}

list_tools () {
    printf "Name\tVersion\t\tOS\n"
    for i in `ls ./src` ; do
        if [ -f "./src/$i/version" ] ; then
        	t_version=`cat ./src/$i/version | awk '{print $1}'`
        	t_os=`cat ./src/$i/version | awk '{print $2}'`

        	printf "$i\t$t_version\t\t$t_os\n"
        fi
    done
}

online_install () {
	  arg=$1
	  indir=${arg%:*}
	  cd ./src/$indir
	  ver=${arg#*:}
	  ./entrance on $ver
}


offline_install () {
    arg=$1
	  indir=${arg%:*}
	  cd ./src/$indir
	  ver=${arg#*:}
	  ./entrance off $ver
}

entrance $run_mode $command_list $command_install $name_version
